<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 循环：
        // for 循环  ；  for in    ；while ； do while  ；forEach
        // var arr = ["张三","李四","王五"];
        // for(var key in arr){
        //     console.log(arr[key]);
        // }

        // 一、map循环: 映射循环 ： 循环的同时 可以映射(复制)一份出来；

        // 1.使用 
        // var users = [{
        //     name: "张三",
        //     money: 10000
        // }, {
        //     name: "李四",
        //     money: 20000
        // }, {
        //     name: "王五",
        //     money: 1000
        // }, {
        //     name: "王六",
        //     money: 30000
        // }];

        // var res = users.map(function (item, key, arr) {
        //     // console.log(item,key,arr);
        //     var obj = {
        //         name: item.name,
        //         money: "$" + item.money
        //     }
        //     return obj;
        // })
        // console.log(res);


        // var arr = [1, 2, 3, 4, 5];
        // var res = arr.map(function (item) {  // map循环会把返还的内容 收集起来 生成一个新的数组
        //     return item+10;
        // })
        // console.log(res);



        // 2.实现一个mymap



        function mymap(arg, fn) {  // 定义 
            // arg形参 =  arr实参;
            // fn = function (item, key, arr) {return item + 10;}
            var newarr = [];
            for (var i = 0; i < arg.length; i++) {
                var reslut = fn(arg[i], i, arg);  // 执行回调函数；
                // item形参 --》 arg[i]实参
                // key形参 ---》 i实参
                // arr形参 ---> arg实参 
                newarr.push(reslut);
            }
            // console.log(newarr);
            return newarr;

        }


        var arr = [1, 2, 3];
        var res = mymap(arr, function (item, key) {
            console.log(item, key);
            return item+10;
        })
        console.log(res);






    </script>
</body>

</html>